#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <string>
#include <cctype>
#include <cstdlib>
#include <map>
#include <ctime>
#include <vector>
#include <queue>
#include <stack>
#define debuglog(x) cerr<<"\tdebug:"<<#x<<endl
#define debug(x) cerr<<"\tdebug:"<<#x<<"="<<(x)<<endl
#define debugg(x,y) cerr<<"\tdebug:"<<(x)<<":"<<#y<<"="<<(y)<<endl
#define debugzu(x,a,b) 	cerr<<"\tdebug:"<<#x<<"=\n\t";for(int i=a;i<b;i++)cerr<<x[i]<<" ";fprintf(stderr,"\n");
#define debugerzu(x,a,b,c,d) 	cerr<<"\tdebug:"<<#x<<"=\n\t";for(int i=a;i<b;i++,fprintf(stderr,"\n\t"))for(int j=c;j<d;j++)cerr<<x[i][j]<<" ";fprintf(stderr,"\n");
#define R register
#define L long
#define LL long long
#define I inline
#define U unsigned
#define START clock_t __start=clock();
#define STOP fprintf(stderr,"\n\nUse Time:%fs\n",((double)(clock()-__start)/CLOCKS_PER_SEC));
using namespace std;
I LL read()
{
    R LL x;R bool f;R char c;
    for (f=0; (c=getchar())<'0'||c>'9'; f=c=='-');
    for (x=c-'0'; (c=getchar())>='0'&&c<='9'; x=(x<<3)+(x<<1)+c-'0');
    return f?-x:x;
}
typedef struct
{
    int n;
    char a,b,c;
}han;




int main()
{
//  freopen("7-1.in","r",stdin);
//  freopen("7-1.out","w",stdout);
    stack <han>s;
    for(s.push((han){.n=read(),.a='a',.b='b',.c='c'});!s.empty();)
    {
        han now=s.top();
        s.pop();
        if(now.n==1)
            printf("%c -> %c\n",now.a,now.c);
        else
        {
            s.push((han){.n=now.n-1,.a=now.b,.b=now.a,.c=now.c});
            s.push((han){.n=1      ,.a=now.a,.b=now.b,.c=now.c});
            s.push((han){.n=now.n-1,.a=now.a,.b=now.c,.c=now.b});
        }
    }
    
    fclose(stdin);
    fclose(stdout);
    return 0;
}